<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>我的第二份实习，字节跳动 | 鱼皮的编程宝典</title>
    <meta name="generator" content="VuePress 1.9.10">
    <link rel="icon" href="/favicon.ico">
    <script>
        var _hmt = _hmt || [];
        (function() {
          var hm = document.createElement("script");
          hm.src = "https://hm.baidu.com/hm.js?2675818a983a3131404cee835018f016";
          var s = document.getElementsByTagName("script")[0]; 
          s.parentNode.insertBefore(hm, s);
        })();
      </script>
    <meta name="description" content="贴心的编程学习路线，全面的编程知识百科">
    <meta property="article:modified_time" content="2023-11-11T12:17:47.000Z">
    <meta property="og:site_name" content="鱼皮的编程宝典">
    <meta property="og:title" content="我的第二份实习，字节跳动">
    <meta property="og:type" content="article">
    <meta property="og:url" content="https://codefather.cn/%E6%88%91%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%BB%BD%E5%AE%9E%E4%B9%A0-%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8/">
    <meta name="twitter:title" content="我的第二份实习，字节跳动">
    <meta name="twitter:url" content="https://codefather.cn/%E6%88%91%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%BB%BD%E5%AE%9E%E4%B9%A0-%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8/">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:label1" content="Written by">
    <meta name="twitter:label2" content="Filed under">
    <meta name="twitter:data2" content="程序员, 编程, 计算机">
    <meta property="article:tag" content="程序员">
    <meta name="keywords" content="程序员鱼皮, 编程学习路线, 编程知识百科, Java, 编程导航, 前端, 开发, 编程分享, 项目, IT, 求职, 面经">
    
    <link rel="preload" href="/assets/css/0.styles.40c15e22.css" as="style"><link rel="preload" href="/assets/js/app.12ab4756.js" as="script"><link rel="preload" href="/assets/js/2.fd06b53e.js" as="script"><link rel="preload" href="/assets/js/498.1d726726.js" as="script"><link rel="prefetch" href="/assets/js/1.17ea1209.js"><link rel="prefetch" href="/assets/js/10.d9532d8f.js"><link rel="prefetch" href="/assets/js/100.064ea126.js"><link rel="prefetch" href="/assets/js/101.d64c5b33.js"><link rel="prefetch" href="/assets/js/102.5e29a62c.js"><link rel="prefetch" href="/assets/js/103.59ad6cd7.js"><link rel="prefetch" href="/assets/js/104.ae4763e8.js"><link rel="prefetch" href="/assets/js/105.2a9124be.js"><link rel="prefetch" href="/assets/js/106.529bca07.js"><link rel="prefetch" href="/assets/js/107.c8671a0d.js"><link rel="prefetch" href="/assets/js/108.55c93c64.js"><link rel="prefetch" href="/assets/js/109.7d1efa54.js"><link rel="prefetch" href="/assets/js/11.2f89b5eb.js"><link rel="prefetch" href="/assets/js/110.0caecbf5.js"><link rel="prefetch" href="/assets/js/111.a2aeae49.js"><link rel="prefetch" href="/assets/js/112.eb7ceda5.js"><link rel="prefetch" href="/assets/js/113.f304408d.js"><link rel="prefetch" href="/assets/js/114.988c637f.js"><link rel="prefetch" href="/assets/js/115.bfdeed31.js"><link rel="prefetch" href="/assets/js/116.a47b8c53.js"><link rel="prefetch" href="/assets/js/117.2e1e8250.js"><link rel="prefetch" href="/assets/js/118.758ce408.js"><link rel="prefetch" href="/assets/js/119.73d9e688.js"><link rel="prefetch" href="/assets/js/12.53aaa509.js"><link rel="prefetch" href="/assets/js/120.202a8b2e.js"><link rel="prefetch" href="/assets/js/121.ca91d59a.js"><link rel="prefetch" href="/assets/js/122.8804c0dd.js"><link rel="prefetch" href="/assets/js/123.ceada225.js"><link rel="prefetch" href="/assets/js/124.4b2718b7.js"><link rel="prefetch" href="/assets/js/125.72134235.js"><link rel="prefetch" href="/assets/js/126.167b162c.js"><link rel="prefetch" href="/assets/js/127.f8139c17.js"><link rel="prefetch" href="/assets/js/128.da64a377.js"><link rel="prefetch" href="/assets/js/129.c07963b1.js"><link rel="prefetch" href="/assets/js/13.52940164.js"><link rel="prefetch" href="/assets/js/130.f66fc8bb.js"><link rel="prefetch" href="/assets/js/131.a913c7dd.js"><link rel="prefetch" href="/assets/js/132.ea648654.js"><link rel="prefetch" href="/assets/js/133.074ca70e.js"><link rel="prefetch" href="/assets/js/134.dc79ddd8.js"><link rel="prefetch" href="/assets/js/135.c4516208.js"><link rel="prefetch" href="/assets/js/136.2546baf7.js"><link rel="prefetch" href="/assets/js/137.56454fc6.js"><link rel="prefetch" href="/assets/js/138.bdb002bf.js"><link rel="prefetch" href="/assets/js/139.40a2f9b5.js"><link rel="prefetch" href="/assets/js/14.ade1e74d.js"><link rel="prefetch" href="/assets/js/140.06b20427.js"><link rel="prefetch" href="/assets/js/141.8dd992e3.js"><link rel="prefetch" href="/assets/js/142.d9305485.js"><link rel="prefetch" href="/assets/js/143.41bf907e.js"><link rel="prefetch" href="/assets/js/144.c138960c.js"><link rel="prefetch" href="/assets/js/145.fc5b38c8.js"><link rel="prefetch" href="/assets/js/146.c9166b70.js"><link rel="prefetch" href="/assets/js/147.c31d8a01.js"><link rel="prefetch" href="/assets/js/148.5c0534ca.js"><link rel="prefetch" href="/assets/js/149.d2355ea2.js"><link rel="prefetch" href="/assets/js/15.970a8ca5.js"><link rel="prefetch" href="/assets/js/150.c1644898.js"><link rel="prefetch" href="/assets/js/151.b6e4adf0.js"><link rel="prefetch" href="/assets/js/152.7a5071aa.js"><link rel="prefetch" href="/assets/js/153.31abbc68.js"><link rel="prefetch" href="/assets/js/154.9c6bb079.js"><link rel="prefetch" href="/assets/js/155.e5506a40.js"><link rel="prefetch" href="/assets/js/156.992dab50.js"><link rel="prefetch" href="/assets/js/157.12a6ee84.js"><link rel="prefetch" href="/assets/js/158.84dc1045.js"><link rel="prefetch" href="/assets/js/159.fd2022b1.js"><link rel="prefetch" href="/assets/js/16.ff971500.js"><link rel="prefetch" href="/assets/js/160.8d8889cd.js"><link rel="prefetch" href="/assets/js/161.31797def.js"><link rel="prefetch" href="/assets/js/162.bfae7a75.js"><link rel="prefetch" href="/assets/js/163.e5e8094d.js"><link rel="prefetch" href="/assets/js/164.870f212c.js"><link rel="prefetch" href="/assets/js/165.8da20a31.js"><link rel="prefetch" href="/assets/js/166.950a187d.js"><link rel="prefetch" href="/assets/js/167.fd042c52.js"><link rel="prefetch" href="/assets/js/168.7d9f058d.js"><link rel="prefetch" href="/assets/js/169.205df80e.js"><link rel="prefetch" href="/assets/js/17.4b045b26.js"><link rel="prefetch" href="/assets/js/170.270108a3.js"><link rel="prefetch" href="/assets/js/171.9f03d27d.js"><link rel="prefetch" href="/assets/js/172.1882bac7.js"><link rel="prefetch" href="/assets/js/173.fc1fe7d4.js"><link rel="prefetch" href="/assets/js/174.d77c927b.js"><link rel="prefetch" href="/assets/js/175.019b9e83.js"><link rel="prefetch" href="/assets/js/176.5ce31bd8.js"><link rel="prefetch" href="/assets/js/177.9a2006f2.js"><link rel="prefetch" href="/assets/js/178.88265ac1.js"><link rel="prefetch" href="/assets/js/179.3205ce07.js"><link rel="prefetch" href="/assets/js/18.1cdd0514.js"><link rel="prefetch" href="/assets/js/180.2ff51f44.js"><link rel="prefetch" href="/assets/js/181.f792ce97.js"><link rel="prefetch" href="/assets/js/182.103328e1.js"><link rel="prefetch" href="/assets/js/183.40fde303.js"><link rel="prefetch" href="/assets/js/184.1f36ac78.js"><link rel="prefetch" href="/assets/js/185.cf3b1c00.js"><link rel="prefetch" href="/assets/js/186.f7981399.js"><link rel="prefetch" href="/assets/js/187.20fe296d.js"><link rel="prefetch" href="/assets/js/188.7b004fea.js"><link rel="prefetch" href="/assets/js/189.599ca2d9.js"><link rel="prefetch" href="/assets/js/19.5740e4d6.js"><link rel="prefetch" href="/assets/js/190.14087c07.js"><link rel="prefetch" href="/assets/js/191.b0f73f6d.js"><link rel="prefetch" href="/assets/js/192.9d171669.js"><link rel="prefetch" href="/assets/js/193.00975585.js"><link rel="prefetch" href="/assets/js/194.2c7c43b4.js"><link rel="prefetch" href="/assets/js/195.ff126254.js"><link rel="prefetch" href="/assets/js/196.6546ae1c.js"><link rel="prefetch" href="/assets/js/197.eedb67bb.js"><link rel="prefetch" href="/assets/js/198.acdcc22c.js"><link rel="prefetch" href="/assets/js/199.7993a6b2.js"><link rel="prefetch" href="/assets/js/20.8885a4fa.js"><link rel="prefetch" href="/assets/js/200.52f08765.js"><link rel="prefetch" href="/assets/js/201.b85ab10b.js"><link rel="prefetch" href="/assets/js/202.ccec1c85.js"><link rel="prefetch" href="/assets/js/203.3f50a6ed.js"><link rel="prefetch" href="/assets/js/204.f28b803b.js"><link rel="prefetch" href="/assets/js/205.c51c53fd.js"><link rel="prefetch" href="/assets/js/206.ba0aa8f6.js"><link rel="prefetch" href="/assets/js/207.0dce311a.js"><link rel="prefetch" href="/assets/js/208.0ea629a6.js"><link rel="prefetch" href="/assets/js/209.f48c3e71.js"><link rel="prefetch" href="/assets/js/21.0bb62db4.js"><link rel="prefetch" href="/assets/js/210.689db8f2.js"><link rel="prefetch" href="/assets/js/211.72bc0f1f.js"><link rel="prefetch" href="/assets/js/212.456135bd.js"><link rel="prefetch" href="/assets/js/213.d0ea50fc.js"><link rel="prefetch" href="/assets/js/214.1400da91.js"><link rel="prefetch" href="/assets/js/215.aeef3e5d.js"><link rel="prefetch" href="/assets/js/216.a60215af.js"><link rel="prefetch" href="/assets/js/217.d6cd8b69.js"><link rel="prefetch" href="/assets/js/218.1bd500fc.js"><link rel="prefetch" href="/assets/js/219.20faf611.js"><link rel="prefetch" href="/assets/js/22.3e8347a6.js"><link rel="prefetch" href="/assets/js/220.6714179b.js"><link rel="prefetch" href="/assets/js/221.fb5b643d.js"><link rel="prefetch" href="/assets/js/222.d96272e5.js"><link rel="prefetch" href="/assets/js/223.4cb7dc3d.js"><link rel="prefetch" href="/assets/js/224.500d94cc.js"><link rel="prefetch" href="/assets/js/225.d006c34e.js"><link rel="prefetch" href="/assets/js/226.73612150.js"><link rel="prefetch" href="/assets/js/227.b02db9d1.js"><link rel="prefetch" href="/assets/js/228.aad43ff2.js"><link rel="prefetch" href="/assets/js/229.65340802.js"><link rel="prefetch" href="/assets/js/23.ceb5a5ff.js"><link rel="prefetch" href="/assets/js/230.97cab104.js"><link rel="prefetch" href="/assets/js/231.8415349a.js"><link rel="prefetch" href="/assets/js/232.db6d2697.js"><link rel="prefetch" href="/assets/js/233.723d05b1.js"><link rel="prefetch" href="/assets/js/234.26ed5e94.js"><link rel="prefetch" href="/assets/js/235.a586122b.js"><link rel="prefetch" href="/assets/js/236.f802bda8.js"><link rel="prefetch" href="/assets/js/237.cc8767ad.js"><link rel="prefetch" href="/assets/js/238.6485459e.js"><link rel="prefetch" href="/assets/js/239.9fbf3a55.js"><link rel="prefetch" href="/assets/js/24.07267ac6.js"><link rel="prefetch" href="/assets/js/240.1188f244.js"><link rel="prefetch" href="/assets/js/241.cbfb154d.js"><link rel="prefetch" href="/assets/js/242.352cea5a.js"><link rel="prefetch" href="/assets/js/243.07947e1c.js"><link rel="prefetch" href="/assets/js/244.f5b26fa9.js"><link rel="prefetch" href="/assets/js/245.c6030e32.js"><link rel="prefetch" href="/assets/js/246.d3fe99f7.js"><link rel="prefetch" href="/assets/js/247.185ae95d.js"><link rel="prefetch" href="/assets/js/248.a5f1548c.js"><link rel="prefetch" href="/assets/js/249.19691113.js"><link rel="prefetch" href="/assets/js/25.15e1f641.js"><link rel="prefetch" href="/assets/js/250.72fa1d33.js"><link rel="prefetch" href="/assets/js/251.bedd56f7.js"><link rel="prefetch" href="/assets/js/252.32bbcc8b.js"><link rel="prefetch" href="/assets/js/253.b59e5846.js"><link rel="prefetch" href="/assets/js/254.c0e37e1a.js"><link rel="prefetch" href="/assets/js/255.850da3cc.js"><link rel="prefetch" href="/assets/js/256.952d9817.js"><link rel="prefetch" href="/assets/js/257.88667bb8.js"><link rel="prefetch" href="/assets/js/258.c5873c28.js"><link rel="prefetch" href="/assets/js/259.6ae1dcbc.js"><link rel="prefetch" href="/assets/js/26.35b2bbdc.js"><link rel="prefetch" href="/assets/js/260.cb940cc3.js"><link rel="prefetch" href="/assets/js/261.0686c3e9.js"><link rel="prefetch" href="/assets/js/262.d0719839.js"><link rel="prefetch" href="/assets/js/263.ae83ebc1.js"><link rel="prefetch" href="/assets/js/264.209ad8a3.js"><link rel="prefetch" href="/assets/js/265.be8d1ee8.js"><link rel="prefetch" href="/assets/js/266.c51bceaa.js"><link rel="prefetch" href="/assets/js/267.fe8af48a.js"><link rel="prefetch" href="/assets/js/268.e18ed861.js"><link rel="prefetch" href="/assets/js/269.7126031e.js"><link rel="prefetch" href="/assets/js/27.270fcb06.js"><link rel="prefetch" href="/assets/js/270.89ead106.js"><link rel="prefetch" href="/assets/js/271.0643d07a.js"><link rel="prefetch" href="/assets/js/272.32a8e4b0.js"><link rel="prefetch" href="/assets/js/273.9881da47.js"><link rel="prefetch" href="/assets/js/274.2de022ea.js"><link rel="prefetch" href="/assets/js/275.d9a4fe99.js"><link rel="prefetch" href="/assets/js/276.d33de2e9.js"><link rel="prefetch" href="/assets/js/277.1ec367ab.js"><link rel="prefetch" href="/assets/js/278.66ab7c11.js"><link rel="prefetch" href="/assets/js/279.ff51cd15.js"><link rel="prefetch" href="/assets/js/28.ef3f6db2.js"><link rel="prefetch" href="/assets/js/280.ef45ed5f.js"><link rel="prefetch" href="/assets/js/281.87f26b81.js"><link rel="prefetch" href="/assets/js/282.c8ef594b.js"><link rel="prefetch" href="/assets/js/283.15643091.js"><link rel="prefetch" href="/assets/js/284.c4f25b2e.js"><link rel="prefetch" href="/assets/js/285.2d16e4b6.js"><link rel="prefetch" href="/assets/js/286.44eba266.js"><link rel="prefetch" href="/assets/js/287.7613e62f.js"><link rel="prefetch" href="/assets/js/288.b9546d55.js"><link rel="prefetch" href="/assets/js/289.125f85d8.js"><link rel="prefetch" href="/assets/js/29.177558be.js"><link rel="prefetch" href="/assets/js/290.db375797.js"><link rel="prefetch" href="/assets/js/291.90946626.js"><link rel="prefetch" href="/assets/js/292.a4524678.js"><link rel="prefetch" href="/assets/js/293.3ed9b083.js"><link rel="prefetch" href="/assets/js/294.d6c14116.js"><link rel="prefetch" href="/assets/js/295.2b485032.js"><link rel="prefetch" href="/assets/js/296.29d9aa0f.js"><link rel="prefetch" href="/assets/js/297.bfd72435.js"><link rel="prefetch" href="/assets/js/298.fc056989.js"><link rel="prefetch" href="/assets/js/299.0a3f258e.js"><link rel="prefetch" href="/assets/js/3.4dc033c7.js"><link rel="prefetch" href="/assets/js/30.248a229d.js"><link rel="prefetch" href="/assets/js/300.d064d776.js"><link rel="prefetch" href="/assets/js/301.d95b9fc0.js"><link rel="prefetch" href="/assets/js/302.1afa637a.js"><link rel="prefetch" href="/assets/js/303.231beaa8.js"><link rel="prefetch" href="/assets/js/304.05df35d9.js"><link rel="prefetch" href="/assets/js/305.f2d83cf9.js"><link rel="prefetch" href="/assets/js/306.d54f5e5e.js"><link rel="prefetch" href="/assets/js/307.d5df9000.js"><link rel="prefetch" href="/assets/js/308.ef2f52b3.js"><link rel="prefetch" href="/assets/js/309.d1f13319.js"><link rel="prefetch" href="/assets/js/31.32a62b91.js"><link rel="prefetch" href="/assets/js/310.30b84be3.js"><link rel="prefetch" href="/assets/js/311.d79e3145.js"><link rel="prefetch" href="/assets/js/312.58e24f19.js"><link rel="prefetch" href="/assets/js/313.9809a122.js"><link rel="prefetch" href="/assets/js/314.e92e41b1.js"><link rel="prefetch" href="/assets/js/315.8c2fc1d4.js"><link rel="prefetch" href="/assets/js/316.a0904343.js"><link rel="prefetch" href="/assets/js/317.18e42b54.js"><link rel="prefetch" href="/assets/js/318.6b051d27.js"><link rel="prefetch" href="/assets/js/319.513b0197.js"><link rel="prefetch" href="/assets/js/32.23b75afc.js"><link rel="prefetch" href="/assets/js/320.ae91bc36.js"><link rel="prefetch" href="/assets/js/321.a194efea.js"><link rel="prefetch" href="/assets/js/322.8273020e.js"><link rel="prefetch" href="/assets/js/323.d332e08f.js"><link rel="prefetch" href="/assets/js/324.ed867b64.js"><link rel="prefetch" href="/assets/js/325.c43ccf9a.js"><link rel="prefetch" href="/assets/js/326.9497d879.js"><link rel="prefetch" href="/assets/js/327.7f095e40.js"><link rel="prefetch" href="/assets/js/328.cb5c5847.js"><link rel="prefetch" href="/assets/js/329.d36b59f3.js"><link rel="prefetch" href="/assets/js/33.b258b779.js"><link rel="prefetch" href="/assets/js/330.b1a092b9.js"><link rel="prefetch" href="/assets/js/331.ff86566f.js"><link rel="prefetch" href="/assets/js/332.0daafa9f.js"><link rel="prefetch" href="/assets/js/333.b7e50524.js"><link rel="prefetch" href="/assets/js/334.7dcf9f0b.js"><link rel="prefetch" href="/assets/js/335.862c410a.js"><link rel="prefetch" href="/assets/js/336.c6384990.js"><link rel="prefetch" href="/assets/js/337.ab9d5e52.js"><link rel="prefetch" href="/assets/js/338.598ae59e.js"><link rel="prefetch" href="/assets/js/339.9b810ff8.js"><link rel="prefetch" href="/assets/js/34.3bd60f1f.js"><link rel="prefetch" href="/assets/js/340.5609a53c.js"><link rel="prefetch" href="/assets/js/341.969d335a.js"><link rel="prefetch" href="/assets/js/342.43f85dba.js"><link rel="prefetch" href="/assets/js/343.47280ef9.js"><link rel="prefetch" href="/assets/js/344.346ae5fc.js"><link rel="prefetch" href="/assets/js/345.32166361.js"><link rel="prefetch" href="/assets/js/346.86ff128b.js"><link rel="prefetch" href="/assets/js/347.3c5421fe.js"><link rel="prefetch" href="/assets/js/348.95910300.js"><link rel="prefetch" href="/assets/js/349.004158d8.js"><link rel="prefetch" href="/assets/js/35.18e8f66a.js"><link rel="prefetch" href="/assets/js/350.e10b195b.js"><link rel="prefetch" href="/assets/js/351.12f89875.js"><link rel="prefetch" href="/assets/js/352.83957394.js"><link rel="prefetch" href="/assets/js/353.475971b9.js"><link rel="prefetch" href="/assets/js/354.8af7b26b.js"><link rel="prefetch" href="/assets/js/355.85925e24.js"><link rel="prefetch" href="/assets/js/356.1d77cf9c.js"><link rel="prefetch" href="/assets/js/357.b467d481.js"><link rel="prefetch" href="/assets/js/358.ac96f32d.js"><link rel="prefetch" href="/assets/js/359.e048bd10.js"><link rel="prefetch" href="/assets/js/36.a7ae257c.js"><link rel="prefetch" href="/assets/js/360.e9b45545.js"><link rel="prefetch" href="/assets/js/361.ad1bb45b.js"><link rel="prefetch" href="/assets/js/362.4e24a30b.js"><link rel="prefetch" href="/assets/js/363.64f7dad5.js"><link rel="prefetch" href="/assets/js/364.d9e3ebc2.js"><link rel="prefetch" href="/assets/js/365.330e3086.js"><link rel="prefetch" href="/assets/js/366.a6c0afb3.js"><link rel="prefetch" href="/assets/js/367.ffcefa40.js"><link rel="prefetch" href="/assets/js/368.664c8e4d.js"><link rel="prefetch" href="/assets/js/369.67da2dd2.js"><link rel="prefetch" href="/assets/js/37.d709f9a9.js"><link rel="prefetch" href="/assets/js/370.b1791970.js"><link rel="prefetch" href="/assets/js/371.743a461a.js"><link rel="prefetch" href="/assets/js/372.7703ef1b.js"><link rel="prefetch" href="/assets/js/373.17de31f6.js"><link rel="prefetch" href="/assets/js/374.e508be9e.js"><link rel="prefetch" href="/assets/js/375.6e2e9fe3.js"><link rel="prefetch" href="/assets/js/376.8ca3511a.js"><link rel="prefetch" href="/assets/js/377.bfcee39c.js"><link rel="prefetch" href="/assets/js/378.21852b78.js"><link rel="prefetch" href="/assets/js/379.9649c307.js"><link rel="prefetch" href="/assets/js/38.68ca920e.js"><link rel="prefetch" href="/assets/js/380.dadb4418.js"><link rel="prefetch" href="/assets/js/381.a03c993d.js"><link rel="prefetch" href="/assets/js/382.bb7c22c1.js"><link rel="prefetch" href="/assets/js/383.bd68b2e5.js"><link rel="prefetch" href="/assets/js/384.f6dc7457.js"><link rel="prefetch" href="/assets/js/385.14287a91.js"><link rel="prefetch" href="/assets/js/386.a6284ac2.js"><link rel="prefetch" href="/assets/js/387.c51f147a.js"><link rel="prefetch" href="/assets/js/388.06d9651e.js"><link rel="prefetch" href="/assets/js/389.2d85d927.js"><link rel="prefetch" href="/assets/js/39.de850db9.js"><link rel="prefetch" href="/assets/js/390.2397b3e0.js"><link rel="prefetch" href="/assets/js/391.8413aaaf.js"><link rel="prefetch" href="/assets/js/392.00eecaa4.js"><link rel="prefetch" href="/assets/js/393.351dd3fd.js"><link rel="prefetch" href="/assets/js/394.d2cc4a70.js"><link rel="prefetch" href="/assets/js/395.abee64bf.js"><link rel="prefetch" href="/assets/js/396.bc265e6a.js"><link rel="prefetch" href="/assets/js/397.e4a96944.js"><link rel="prefetch" href="/assets/js/398.f0d26b29.js"><link rel="prefetch" href="/assets/js/399.e77c3ddc.js"><link rel="prefetch" href="/assets/js/4.2f502b73.js"><link rel="prefetch" href="/assets/js/40.91635261.js"><link rel="prefetch" href="/assets/js/400.c7eac401.js"><link rel="prefetch" href="/assets/js/401.06092d16.js"><link rel="prefetch" href="/assets/js/402.4e08e496.js"><link rel="prefetch" href="/assets/js/403.deba4c77.js"><link rel="prefetch" href="/assets/js/404.9100e4df.js"><link rel="prefetch" href="/assets/js/405.e9f451e2.js"><link rel="prefetch" href="/assets/js/406.a0da4aa4.js"><link rel="prefetch" href="/assets/js/407.58b2b123.js"><link rel="prefetch" href="/assets/js/408.eb2cde2d.js"><link rel="prefetch" href="/assets/js/409.9041f749.js"><link rel="prefetch" href="/assets/js/41.169a3cfc.js"><link rel="prefetch" href="/assets/js/410.c12f3710.js"><link rel="prefetch" href="/assets/js/411.452cda45.js"><link rel="prefetch" href="/assets/js/412.8691317a.js"><link rel="prefetch" href="/assets/js/413.25a68f21.js"><link rel="prefetch" href="/assets/js/414.7a9699d8.js"><link rel="prefetch" href="/assets/js/415.6e8cdaff.js"><link rel="prefetch" href="/assets/js/416.e8a86529.js"><link rel="prefetch" href="/assets/js/417.28330bde.js"><link rel="prefetch" href="/assets/js/418.2fed8e17.js"><link rel="prefetch" href="/assets/js/419.773032f4.js"><link rel="prefetch" href="/assets/js/42.e17cd061.js"><link rel="prefetch" href="/assets/js/420.56681228.js"><link rel="prefetch" href="/assets/js/421.0d170e13.js"><link rel="prefetch" href="/assets/js/422.fc8c2a11.js"><link rel="prefetch" href="/assets/js/423.e34ea6a6.js"><link rel="prefetch" href="/assets/js/424.20fe8748.js"><link rel="prefetch" href="/assets/js/425.f001b7cd.js"><link rel="prefetch" href="/assets/js/426.a91230ef.js"><link rel="prefetch" href="/assets/js/427.c6c9fe8d.js"><link rel="prefetch" href="/assets/js/428.9d4f5e41.js"><link rel="prefetch" href="/assets/js/429.c81cfd3f.js"><link rel="prefetch" href="/assets/js/43.f88aa667.js"><link rel="prefetch" href="/assets/js/430.eb61372f.js"><link rel="prefetch" href="/assets/js/431.4a25365a.js"><link rel="prefetch" href="/assets/js/432.42fc1bbe.js"><link rel="prefetch" href="/assets/js/433.8e9ac9f0.js"><link rel="prefetch" href="/assets/js/434.fdd0b160.js"><link rel="prefetch" href="/assets/js/435.d6cbac31.js"><link rel="prefetch" href="/assets/js/436.17750ba2.js"><link rel="prefetch" href="/assets/js/437.a1468099.js"><link rel="prefetch" href="/assets/js/438.ac6a45c2.js"><link rel="prefetch" href="/assets/js/439.242ae27a.js"><link rel="prefetch" href="/assets/js/44.3f36e228.js"><link rel="prefetch" href="/assets/js/440.b80b520c.js"><link rel="prefetch" href="/assets/js/441.e51a4bbb.js"><link rel="prefetch" href="/assets/js/442.ab0b3eda.js"><link rel="prefetch" href="/assets/js/443.47e44250.js"><link rel="prefetch" href="/assets/js/444.54c3b425.js"><link rel="prefetch" href="/assets/js/445.e006c12e.js"><link rel="prefetch" href="/assets/js/446.f2b79730.js"><link rel="prefetch" href="/assets/js/447.2509a397.js"><link rel="prefetch" href="/assets/js/448.b7d69dfc.js"><link rel="prefetch" href="/assets/js/449.8a575d9b.js"><link rel="prefetch" href="/assets/js/45.be1455b1.js"><link rel="prefetch" href="/assets/js/450.ad421aeb.js"><link rel="prefetch" href="/assets/js/451.f09912ae.js"><link rel="prefetch" href="/assets/js/452.f528c4ce.js"><link rel="prefetch" href="/assets/js/453.fc4dc0f9.js"><link rel="prefetch" href="/assets/js/454.733c315c.js"><link rel="prefetch" href="/assets/js/455.44fe35b1.js"><link rel="prefetch" href="/assets/js/456.7f650035.js"><link rel="prefetch" href="/assets/js/457.77ebc183.js"><link rel="prefetch" href="/assets/js/458.133078f4.js"><link rel="prefetch" href="/assets/js/459.33728b5e.js"><link rel="prefetch" href="/assets/js/46.5ad74cb5.js"><link rel="prefetch" href="/assets/js/460.6946f564.js"><link rel="prefetch" href="/assets/js/461.6f906c5c.js"><link rel="prefetch" href="/assets/js/462.26eca27e.js"><link rel="prefetch" href="/assets/js/463.e02e5f65.js"><link rel="prefetch" href="/assets/js/464.0df25c63.js"><link rel="prefetch" href="/assets/js/465.80cd249e.js"><link rel="prefetch" href="/assets/js/466.a0921e86.js"><link rel="prefetch" href="/assets/js/467.1bec2b47.js"><link rel="prefetch" href="/assets/js/468.b6fa37c1.js"><link rel="prefetch" href="/assets/js/469.a1d2487e.js"><link rel="prefetch" href="/assets/js/47.03df5d0a.js"><link rel="prefetch" href="/assets/js/470.36a4b9c8.js"><link rel="prefetch" href="/assets/js/471.28895273.js"><link rel="prefetch" href="/assets/js/472.b9fe392f.js"><link rel="prefetch" href="/assets/js/473.a2835d9c.js"><link rel="prefetch" href="/assets/js/474.cd57b37d.js"><link rel="prefetch" href="/assets/js/475.8d5a9792.js"><link rel="prefetch" href="/assets/js/476.f7f3781c.js"><link rel="prefetch" href="/assets/js/477.9b710b04.js"><link rel="prefetch" href="/assets/js/478.46d66687.js"><link rel="prefetch" href="/assets/js/479.e7444705.js"><link rel="prefetch" href="/assets/js/48.48f286ba.js"><link rel="prefetch" href="/assets/js/480.da2b750a.js"><link rel="prefetch" href="/assets/js/481.838a8e04.js"><link rel="prefetch" href="/assets/js/482.02bf8041.js"><link rel="prefetch" href="/assets/js/483.bb29ef2f.js"><link rel="prefetch" href="/assets/js/484.aebb68bd.js"><link rel="prefetch" href="/assets/js/485.a66ab41b.js"><link rel="prefetch" href="/assets/js/486.8df516fb.js"><link rel="prefetch" href="/assets/js/487.86d28130.js"><link rel="prefetch" href="/assets/js/488.0863da70.js"><link rel="prefetch" href="/assets/js/489.5d4d9e88.js"><link rel="prefetch" href="/assets/js/49.1ca52d11.js"><link rel="prefetch" href="/assets/js/490.3fd65d85.js"><link rel="prefetch" href="/assets/js/491.ae3a2f87.js"><link rel="prefetch" href="/assets/js/492.6f54679b.js"><link rel="prefetch" href="/assets/js/493.a594b1f4.js"><link rel="prefetch" href="/assets/js/494.4f03fae1.js"><link rel="prefetch" href="/assets/js/495.ae50b66b.js"><link rel="prefetch" href="/assets/js/496.bc92d835.js"><link rel="prefetch" href="/assets/js/497.eac65251.js"><link rel="prefetch" href="/assets/js/499.01e4f7d1.js"><link rel="prefetch" href="/assets/js/5.7b1f056c.js"><link rel="prefetch" href="/assets/js/50.73732fe2.js"><link rel="prefetch" href="/assets/js/500.062ade4e.js"><link rel="prefetch" href="/assets/js/501.e6a711dc.js"><link rel="prefetch" href="/assets/js/502.c79e28e2.js"><link rel="prefetch" href="/assets/js/503.bf97bce9.js"><link rel="prefetch" href="/assets/js/504.b2784ef0.js"><link rel="prefetch" href="/assets/js/505.0767ba54.js"><link rel="prefetch" href="/assets/js/506.8ae14637.js"><link rel="prefetch" href="/assets/js/507.003e2349.js"><link rel="prefetch" href="/assets/js/508.ecb5e6bd.js"><link rel="prefetch" href="/assets/js/509.b644f44a.js"><link rel="prefetch" href="/assets/js/51.bed7cf61.js"><link rel="prefetch" href="/assets/js/510.b660946f.js"><link rel="prefetch" href="/assets/js/511.cb186c8f.js"><link rel="prefetch" href="/assets/js/512.d176170f.js"><link rel="prefetch" href="/assets/js/513.18a1afa5.js"><link rel="prefetch" href="/assets/js/514.4a33e931.js"><link rel="prefetch" href="/assets/js/515.8496bd4d.js"><link rel="prefetch" href="/assets/js/516.529b9476.js"><link rel="prefetch" href="/assets/js/517.289738f1.js"><link rel="prefetch" href="/assets/js/518.eda39556.js"><link rel="prefetch" href="/assets/js/519.85b42de5.js"><link rel="prefetch" href="/assets/js/52.22a7da62.js"><link rel="prefetch" href="/assets/js/520.8b531775.js"><link rel="prefetch" href="/assets/js/521.8e4b66fb.js"><link rel="prefetch" href="/assets/js/522.050bfc55.js"><link rel="prefetch" href="/assets/js/523.e973f1e0.js"><link rel="prefetch" href="/assets/js/524.fd160738.js"><link rel="prefetch" href="/assets/js/525.5a4bc307.js"><link rel="prefetch" href="/assets/js/526.361bc4fa.js"><link rel="prefetch" href="/assets/js/527.06ee9d73.js"><link rel="prefetch" href="/assets/js/528.22d9b118.js"><link rel="prefetch" href="/assets/js/529.b7592c16.js"><link rel="prefetch" href="/assets/js/53.767f3bbf.js"><link rel="prefetch" href="/assets/js/530.ad96d564.js"><link rel="prefetch" href="/assets/js/531.61905243.js"><link rel="prefetch" href="/assets/js/532.11aebf61.js"><link rel="prefetch" href="/assets/js/533.0cddb226.js"><link rel="prefetch" href="/assets/js/534.d1c9cc36.js"><link rel="prefetch" href="/assets/js/54.d1f9eec8.js"><link rel="prefetch" href="/assets/js/55.aa90e812.js"><link rel="prefetch" href="/assets/js/56.4d7f81f2.js"><link rel="prefetch" href="/assets/js/57.3c540e8d.js"><link rel="prefetch" href="/assets/js/58.fc1c23f2.js"><link rel="prefetch" href="/assets/js/59.c7a7a4c0.js"><link rel="prefetch" href="/assets/js/6.056886f1.js"><link rel="prefetch" href="/assets/js/60.40e590ae.js"><link rel="prefetch" href="/assets/js/61.e400b323.js"><link rel="prefetch" href="/assets/js/62.bbb30ef1.js"><link rel="prefetch" href="/assets/js/63.c31cd2bb.js"><link rel="prefetch" href="/assets/js/64.62321188.js"><link rel="prefetch" href="/assets/js/65.44adc2b3.js"><link rel="prefetch" href="/assets/js/66.b5740d4f.js"><link rel="prefetch" href="/assets/js/67.76c3624c.js"><link rel="prefetch" href="/assets/js/68.6dd982d4.js"><link rel="prefetch" href="/assets/js/69.eb1390ec.js"><link rel="prefetch" href="/assets/js/7.a96cecf9.js"><link rel="prefetch" href="/assets/js/70.8c882bdd.js"><link rel="prefetch" href="/assets/js/71.001c968a.js"><link rel="prefetch" href="/assets/js/72.ae4ca075.js"><link rel="prefetch" href="/assets/js/73.d6ae6a27.js"><link rel="prefetch" href="/assets/js/74.fba60e37.js"><link rel="prefetch" href="/assets/js/75.0b1bf7bf.js"><link rel="prefetch" href="/assets/js/76.ee19d90e.js"><link rel="prefetch" href="/assets/js/77.fe8ac5f0.js"><link rel="prefetch" href="/assets/js/78.ae09432e.js"><link rel="prefetch" href="/assets/js/79.c1b10e2d.js"><link rel="prefetch" href="/assets/js/80.ae809538.js"><link rel="prefetch" href="/assets/js/81.ca11b4c7.js"><link rel="prefetch" href="/assets/js/82.308b98e4.js"><link rel="prefetch" href="/assets/js/83.355d9dde.js"><link rel="prefetch" href="/assets/js/84.a2b61d48.js"><link rel="prefetch" href="/assets/js/85.cf992fda.js"><link rel="prefetch" href="/assets/js/86.f547c7ea.js"><link rel="prefetch" href="/assets/js/87.2b02746a.js"><link rel="prefetch" href="/assets/js/88.e939aad5.js"><link rel="prefetch" href="/assets/js/89.b000c42a.js"><link rel="prefetch" href="/assets/js/90.dadef001.js"><link rel="prefetch" href="/assets/js/91.c0fe2e32.js"><link rel="prefetch" href="/assets/js/92.e09650b9.js"><link rel="prefetch" href="/assets/js/93.427c7280.js"><link rel="prefetch" href="/assets/js/94.90fc5f58.js"><link rel="prefetch" href="/assets/js/95.13d42b3a.js"><link rel="prefetch" href="/assets/js/96.d0a2ea8c.js"><link rel="prefetch" href="/assets/js/97.cc9a0eda.js"><link rel="prefetch" href="/assets/js/98.3c9f1b7e.js"><link rel="prefetch" href="/assets/js/99.0420dcbc.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.33b2b47d.js">
    <link rel="stylesheet" href="/assets/css/0.styles.40c15e22.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="鱼皮的编程宝典" class="logo"> <span class="site-name can-hide">鱼皮的编程宝典</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/学习路线/" class="nav-link">
  学习路线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="自学之路" class="dropdown-title"><span class="title">自学之路</span> <span class="arrow down"></span></button> <button type="button" aria-label="自学之路" class="mobile-dropdown-title"><span class="title">自学之路</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/自学之路/#大学经历" class="nav-link">
  大学经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#求职经历" class="nav-link">
  求职经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#职场工作" class="nav-link">
  职场工作
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创作经历" class="nav-link">
  创作经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创业经历" class="nav-link">
  创业经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#生活日常" class="nav-link">
  生活日常
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="编程分享" class="dropdown-title"><span class="title">编程分享</span> <span class="arrow down"></span></button> <button type="button" aria-label="编程分享" class="mobile-dropdown-title"><span class="title">编程分享</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/编程分享/#入门必看-学习路线" class="nav-link">
  入门必看-学习路线
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#学习指南" class="nav-link">
  学习指南
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#开发经验" class="nav-link">
  开发经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#求职经验" class="nav-link">
  求职经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#职场经验" class="nav-link">
  职场经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#技术分享" class="nav-link">
  技术分享
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#实战教程" class="nav-link">
  实战教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#其他" class="nav-link">
  其他
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#📚-项目教程" class="nav-link">
  项目教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#个人作品" class="nav-link">
  个人作品
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🎁-编程资源" class="nav-link">
  编程资源
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🌐-科技科普" class="nav-link">
  科技科普
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="项目实战" class="dropdown-title"><span class="title">项目实战</span> <span class="arrow down"></span></button> <button type="button" aria-label="项目实战" class="mobile-dropdown-title"><span class="title">项目实战</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/项目实战/OJ 判题系统.html" class="nav-link">
  OJ 判题系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/智能 BI 平台.html" class="nav-link">
  智能 BI 平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/聚合搜索平台.html" class="nav-link">
  聚合搜索平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/API 开放平台.html" class="nav-link">
  API 开放平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/伙伴匹配系统.html" class="nav-link">
  伙伴匹配系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/用户中心项目.html" class="nav-link">
  用户中心项目
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/Java 后端万用项目模板.html" class="nav-link">
  Java 后端万用项目模板
</a></li></ul></div></div><div class="nav-item"><a href="/知识碎片/" class="nav-link">
  知识碎片
</a></div><div class="nav-item"><a href="/编程导航/" class="nav-link">
  🔥 编程导航
</a></div><div class="nav-item"><a href="/产品服务/" class="nav-link">
  产品服务
</a></div><div class="nav-item"><a href="/作者/" class="nav-link">
  作者
</a></div> <a href="https://github.com/liyupi/codefather" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/学习路线/" class="nav-link">
  学习路线
</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="自学之路" class="dropdown-title"><span class="title">自学之路</span> <span class="arrow down"></span></button> <button type="button" aria-label="自学之路" class="mobile-dropdown-title"><span class="title">自学之路</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/自学之路/#大学经历" class="nav-link">
  大学经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#求职经历" class="nav-link">
  求职经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#职场工作" class="nav-link">
  职场工作
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创作经历" class="nav-link">
  创作经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#创业经历" class="nav-link">
  创业经历
</a></li><li class="dropdown-item"><!----> <a href="/自学之路/#生活日常" class="nav-link">
  生活日常
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="编程分享" class="dropdown-title"><span class="title">编程分享</span> <span class="arrow down"></span></button> <button type="button" aria-label="编程分享" class="mobile-dropdown-title"><span class="title">编程分享</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/编程分享/#入门必看-学习路线" class="nav-link">
  入门必看-学习路线
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#学习指南" class="nav-link">
  学习指南
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#开发经验" class="nav-link">
  开发经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#求职经验" class="nav-link">
  求职经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#职场经验" class="nav-link">
  职场经验
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#技术分享" class="nav-link">
  技术分享
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#实战教程" class="nav-link">
  实战教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#其他" class="nav-link">
  其他
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#📚-项目教程" class="nav-link">
  项目教程
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#个人作品" class="nav-link">
  个人作品
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🎁-编程资源" class="nav-link">
  编程资源
</a></li><li class="dropdown-item"><!----> <a href="/编程分享/#🌐-科技科普" class="nav-link">
  科技科普
</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="项目实战" class="dropdown-title"><span class="title">项目实战</span> <span class="arrow down"></span></button> <button type="button" aria-label="项目实战" class="mobile-dropdown-title"><span class="title">项目实战</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/项目实战/OJ 判题系统.html" class="nav-link">
  OJ 判题系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/智能 BI 平台.html" class="nav-link">
  智能 BI 平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/聚合搜索平台.html" class="nav-link">
  聚合搜索平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/API 开放平台.html" class="nav-link">
  API 开放平台
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/伙伴匹配系统.html" class="nav-link">
  伙伴匹配系统
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/用户中心项目.html" class="nav-link">
  用户中心项目
</a></li><li class="dropdown-item"><!----> <a href="/项目实战/Java 后端万用项目模板.html" class="nav-link">
  Java 后端万用项目模板
</a></li></ul></div></div><div class="nav-item"><a href="/知识碎片/" class="nav-link">
  知识碎片
</a></div><div class="nav-item"><a href="/编程导航/" class="nav-link">
  🔥 编程导航
</a></div><div class="nav-item"><a href="/产品服务/" class="nav-link">
  产品服务
</a></div><div class="nav-item"><a href="/作者/" class="nav-link">
  作者
</a></div> <a href="https://github.com/liyupi/codefather" target="_blank" rel="noopener noreferrer" class="repo-link">
    GitHub
    <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></nav>  <ul class="sidebar-links"><li><a href="/%E8%87%AA%E5%AD%A6%E4%B9%8B%E8%B7%AF/" class="sidebar-link">鱼皮的编程学习之路</a></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>大学经历</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading open"><span>求职经历</span> <span class="arrow down"></span></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E4%BB%BD%E5%AE%9E%E4%B9%A0-%E5%9D%90%E9%AB%98%E9%93%81%E4%B8%8A%E7%8F%AD/" class="sidebar-link">我的第一份实习，坐高铁上班</a></li><li><a href="/%E6%88%91%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%BB%BD%E5%AE%9E%E4%B9%A0-%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8/" aria-current="page" class="active sidebar-link">我的第二份实习，字节跳动</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/%E4%BB%96%E4%B8%93%E4%B8%9A%E7%AC%AC%E4%B8%80-%E5%8D%B4%E6%89%BE%E4%B8%8D%E5%88%B0%E5%B7%A5%E4%BD%9C/" class="sidebar-link">他专业第一，却找不到工作</a></li><li><a href="/%E9%9D%A2%E8%AF%95%E9%98%BF%E9%87%8C6%E6%AC%A1-%E4%BB%8D%E7%84%B6%E5%A4%B1%E8%B4%A5%E7%9A%84%E7%BB%8F%E5%8E%86/" class="sidebar-link">面试阿里6次，仍然失败的经历</a></li></ul></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>职场工作</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>创作经历</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>创业经历</span> <span class="arrow right"></span></p> <!----></section></li><li><section class="sidebar-group collapsable depth-0"><p class="sidebar-heading"><span>生活日常</span> <span class="arrow right"></span></p> <!----></section></li></ul> </aside> <main class="page"> <div class="content"><div style="width:100%"><div class="theme-default-content custom-content content__default"><h1 id="我的第二份实习-字节跳动"><a href="#我的第二份实习-字节跳动" class="header-anchor">#</a> 我的第二份实习，字节跳动</h1> <blockquote><p>本文作者：<a href="https://yuyuanweb.feishu.cn/wiki/Abldw5WkjidySxkKxU2cQdAtnah" target="_blank" rel="noopener noreferrer">程序员鱼皮<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p> <p>本站地址：<a href="https://codefather.cn" target="_blank" rel="noopener noreferrer">https://codefather.cn<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <blockquote><p>我的超完整字节跳动实习经验分享！</p></blockquote> <p>大家好，我是鱼皮。</p> <p>前段时间，我收到了这样一条短信：</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951480.png" loading="lazy" class="lazy"></p> <p>原来是字节跳动公司发来的周年庆祝福，看到这个短信，我真是太激动了！瞬间回想起了当年在字节跳动实习的往事，眼泪止不住地往下流啊，好想大喊一句，爷的青春回来啦！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951360.png" loading="lazy" class="lazy"></p> <p>在上篇文章中，我分享了自己人生中 <a href="https://mp.weixin.qq.com/s?__biz=MzI1NDczNTAwMA==&amp;mid=2247496813&amp;idx=1&amp;sn=b61b5ca564d74ac5a5902f755d64acb5&amp;scene=21#wechat_redirect" target="_blank" rel="noopener noreferrer">第一次实习<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 的经历，是我人生中的重要转折点，让我确定了自己的重点编程学习方向 —— Java 后端开发。然而，第二次在字节跳动的实习，差点让我再次陷入迷茫，把我带沟里去。</p> <p>为啥这么说呢？</p> <p>因为在字节跳动，我的工作和 Java 半毛钱关系都没有，写的是 PHP 语言和 Golang！但还好都是后端开发，大方向没偏。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951427.png" loading="lazy" class="lazy"></p> <p>这段实习经历，让我学到了太多牛逼的东西，也真正带我走向了社会，提前体验了一把未来工作后的生活。</p> <p>下面就分享一下我的第二次实习，依然是我从有实习想法，到投递简历、参与面试，再到通过面试、正式工作，再到最后离职的完整经历和心路历程，可以当个故事看看，希望对朋友们有帮助。</p> <p>鱼皮比较长，先提供个大纲吧，方便大家挑选自己感兴趣的部分阅读。</p> <h3 id="大纲"><a href="#大纲" class="header-anchor">#</a> 大纲</h3> <ul><li>为什么要找实习</li> <li>我当时的背景和技术</li> <li>去哪儿找实习</li> <li>我的实习面试经历</li> <li>实习工作内容</li> <li>收获和感悟</li></ul> <h3 id="为什么找实习"><a href="#为什么找实习" class="header-anchor">#</a> 为什么找实习？</h3> <p>我是在大三上学期开始找的实习，时间大概是 11 月份吧，这次找的是日常实习。</p> <p>为啥在这个不寒不暑的时间找实习，而不是待在学校好好上课呢？</p> <p><strong>原因有以下几点：</strong></p> <ol><li>当时刚刚经历了大二暑假的暑期实习，返回学校休养生息，平时课程比较少，就是在实验室跟着老师做项目，或者自己泡图书馆学学技术啥的，空闲的时间还比较多。</li> <li>经历了大二暑假的实习，我感觉企业的环境比较适合我，相对于学校，在公司有更多的实践机会，接触到更多的技术，学到更多的知识。</li> <li>在找上一段实习时，我被面试官血虐了，让我意识到自己在面试方面的不足。<strong>男儿雪耻，十年不晚啊！</strong> 又努力学习了一段时间，我不得再出去闯一闯，看看能不能和面试官多来个几回合？</li> <li>通过和前辈们的交流，我意识到实习经历和项目经验对应届程序员找工作来说非常重要，大厂的要求很高，我自己也确实没底。既然不能一日同风起，扶摇直上 BAT。那我就一步步来，把每段实习经历当做楼梯，稳扎稳打地爬楼梯进大厂！</li> <li>我是一个 <strong>脱离了高级趣味</strong> 的人，我想要钱，尤其是想用技术赚钱。</li></ol> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951404.png" loading="lazy" class="lazy"></p> <p>和大二找暑期实习时的迷茫且懵逼相比，这次我的目标明确且坚定、且有野心，剑头直指国内知名互联网公司 —— 字节跳动！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951368.png" loading="lazy" class="lazy"></p> <p>有小伙伴好奇了啊，在 18 年底那会儿字节跳动好像也不是顶级巨头啊，你咋不往阿里、腾讯啥的冲一冲呢？</p> <p>主要是我怂。</p> <p>其实这东西也比较随缘吧，在这之前，我完全没关注过字节跳动这家公司，毕竟头条咱不看、抖音美女咱不爱，其他的产品更没接触过。但一个人处在不同的环境、遇到不同的人、接触不同的事物，可能都会或多或少地影响他的决定。对我而言，选择字节跳动很大一部分原因是受到了环境的影响，大概有以下几点：</p> <ol><li>当时身边有个帅学长，大一给我讲过 web 开发课。后来他去字节跳动了，我没事就围观他的朋友圈，发现他经常放一些公司的照片，好几台电脑，文字中透露着骄傲和自信。于是我就去百度了下，卧槽，字节跳动好像挺牛逼？那我不得跟紧大佬的步伐，也混进去看看？（围观朋友圈还是挺有用的，也欢迎大家加我微信好友 liyupi66 哈哈）</li> <li>读过我上一篇文章的朋友应该还记得，我在暑期实习时，遇到一个姐姐，她说自己一直想去字节跳动，因为姐姐对我不错，我心里就想：行，我帮你圆梦。男人，说话必须得算数吧！</li> <li>我是一个脱离了高级趣味的人，字节跳动当时的实习工资是一天 <strong>400</strong>，在国内绝对是实习薪资天花板了！看到这个数字，我把握不住啊，啥都别说了，就这家公司了！我要去我要去。</li></ol> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951391.png" loading="lazy" class="lazy"></p> <p>明确了目标之后，我就准备开始找实习了，找实习的第一步当然是准备简历，大二暑假前的那个肯定不能再接着用了。正好，梳理下自己当时的情况吧。</p> <h3 id="个人情况"><a href="#个人情况" class="header-anchor">#</a> 个人情况</h3> <p>大二找暑期实习时，我给自己配了一张图：</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951046.png" loading="lazy" class="lazy">我是废物</p> <p>在那时，我参加了几次面试，但结果都不太理想。我永远无法忘记，在当时，一些面试官对我投来的鄙夷目光，以及一些员工看着我的怜悯眼神，好像在看一条流浪狗啊！</p> <p>哈哈开个玩笑，突出一下自己当时内心的难过。</p> <p>没事，知耻而后勇！于是，我发奋努力，发如雨下，甚至还 <strong>戴上了帽子</strong> 来掩盖自己努力的痕迹。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951816.png" loading="lazy" class="lazy"></p> <p>终于，在这次找实习的时候，我可以骄傲地给自己换一张配图了！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951049.png" loading="lazy" class="lazy"></p> <p><strong>虽然我还是废物，但起码站起来了啊！</strong></p> <p>首先，这一次，我的简历不再空空如也了：</p> <ul><li>在大二这一年，我洗心革面，好好学习，拿到了国家奖学金，写上去！</li> <li>大二结束前参加蓝桥杯拿了个奖，写上去！</li> <li>大二暑假的实习经历也让我多了项目经验，写上去！</li> <li>在实验室跟着老师做区块链项目，写上去！</li> <li>自己新开发了个系统，写上去！</li> <li>新学了微服务之类的技术栈，写上去！</li></ul> <p><strong>再次强调，简历真的是太重要了，建议多花点时间去优化简历。</strong> 毕竟在面试官看到你之前，只能通过这么一张纸来了解你，所以自己的荣誉奖项、技术、项目等一定要 <strong>毫无保留</strong> 地写在简历上，并且按照优先级进行排序，取精去糙。没有的话，就要自己抓紧想办法争取，机会不可能自己送上门来。</p> <p>此外，在大概 3 个月的时间内，我学了 Java 后端的 SpringCloud 微服务全家桶，以及像 Zookeeper 分布式协调工具、RabbitMQ 消息队列、Elasticsearch 搜索引擎等后端常用的技术；并且通过每日坚持训练 3 道题，已经在 LeetCode 上刷了至少 200 道算法题目；还看了几十份面经，像前辈们请教了求职经验。</p> <p><strong>总之，这一次，我李某是有备而来。</strong></p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951273.png" loading="lazy" class="lazy"></p> <p>这里可能会有朋友问了，怎么你这几个月的时间学了这么多东西，开挂了么？</p> <p><strong>我李鱼皮没有开挂！</strong></p> <p>其实，我最开始学编程的时候，可能书都看不懂，一页看好久、看好几遍，所以只能看些简单的视频教程学习。但随着学编程的时间越来越长，看了更多，并且积累了更多知识和经验后，我发现，在不知不觉中，原来自己已经能看懂书本、看懂官方文档、甚至能看懂源码了！再学习新技术时，很容易 <strong>联想、类比和对比</strong> 自己以前学过的知识，就相对容易了很多，也是越学越快，越学越起劲。</p> <p>举个例子，前端学完了 Vue 之后，再学 React 就轻松很多，因为前端工程化的应用都是一致的；后端学完一个消息队列，了解了常用模型和概念后，再去学其他的，也能更快上手。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951238.png" loading="lazy" class="lazy"></p> <h3 id="去哪儿找实习"><a href="#去哪儿找实习" class="header-anchor">#</a> 去哪儿找实习？</h3> <p>上次找暑期实习时，由于我没什么目标，就把各种找实习的方法和平台都试了一遍。比如实习僧投简历、牛客网找内推、咨询学长和老师等。</p> <p>但这次我的目标明确，所以就没打算在找实习上花太多时间，直接登录字节跳动校园招聘官网，找到自己的意向职位，填写简历投递就行了。不得不感叹，现在字节跳动招人是真的多，实习岗位也非常全面。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951744.png" loading="lazy" class="lazy">字节跳动校招官网</p> <p>上次找实习时，简历上没东西可以写，还好我当时掏出小本本记下了，并且告诫自己 “今后一定要去参加比赛，得到一些荣誉，还要多做项目，给自己挽回面子”。这次，我卷土重来，终于可以在简历上写点儿东西了！</p> <p>好吧，网上看了其他大佬的简历后，我发现跟其他大佬比起来，我的简历虽然能写一张纸了，但上面的荣誉和项目介绍都没什么亮点。于是我赶紧再掏出小本本记下来，决定之后再去参加大点的比赛，做个有新意的项目。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951599.png" loading="lazy" class="lazy"></p> <p>当然，我也没有自信一定能面试过字节跳动，所以还投递了一些其他公司。不过大公司的日常实习的机会不是很多，岗位比较流动，放到官网上的更是少之又少。看来大部分还都是以暑期实习为主，所以大家还是要尽量抓住暑期实习的机会。</p> <p>值得一提的是，其实这次找实习时，我也投递了腾讯，而正是这次投递，竟然直接帮我拿到了暑期实习的 offer！在当时是打死我都想不到的。<strong>当然，这是后话了。</strong></p> <h3 id="面试经历"><a href="#面试经历" class="header-anchor">#</a> 面试经历</h3> <p>在字节官网投递简历后，没过几天，我就收到了面试通知，让我这几天就来面试。当时的我又惊又喜，喜的是没想到这么快就顺利过了简历这关；惊的是太特么快了，我还没做好准备。</p> <p>不过来都来了，沙雕程序员申请出战！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951100.png" loading="lazy" class="lazy"></p> <h4 id="备战"><a href="#备战" class="header-anchor">#</a> 备战</h4> <p>在面试前的这几天，我每天都会狂背知识点、狂看字节跳动相关的面经，并且把自己做过的算法题又完整看了一遍，尽量保证每道题都能清晰地讲出思路。为了面试的时候表现流畅，不出现阿巴阿巴的情况，我还特地练习了自我介绍，并且掏出了自己以前做过的项目，把面前的电脑想象成面试官，尝试着向他复述出项目的设计思路、实现原理和优势等。</p> <p>强烈建议大家也试试这个方法，可以把曾经最让你感到紧张的老师照片贴到电脑上，对着他讲知识点。此外，网上也有一些 AI 模拟面试的平台，比如 <strong>牛客</strong> 。通过用这个方法一遍遍训练，不仅让我从最初的不知所云、说话老是阿巴阿巴，变成了最后的行云流水；还帮我消除了紧张情绪，习惯了面试。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951094.png" loading="lazy" class="lazy"></p> <p>除了硬知识的储备和软实力的锻炼，我还选择相信玄学。当时担心自己头发太长，会被面试官觉得技术不佳，特地去理发店削了一大层，头皮差点没给我削掉。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951124.png" loading="lazy" class="lazy"></p> <p>面试那天，我又换上一身帅气西装，戴上我的小手表儿，坐了两个小时的地铁来到字节跳动公司楼下，准备开战！</p> <h4 id="一面-有惊无险"><a href="#一面-有惊无险" class="header-anchor">#</a> 一面，有惊无险</h4> <p>一面的面试官大孙（我未来的同事）是个男的，看着还挺年轻，头发尚可。大孙走路带风，很有气势，快走到我身边的时候，我甚至感受到了一股凛冽。</p> <p>还没等他坐到我对面，我就先站了起来，说了句 “您好请坐”，然后我们就都坐下，面试开始。</p> <p>首先当然是自我介绍，一通阿巴阿巴之后，大孙问了我一个问题，差点让我两股战战几欲先走。</p> <p>他问：“我刚刚听你介绍自己主要是学习 Java 方向的，可我们这需要写 PHP 和 Go 哎。”</p> <p>我愣住了：“？？？”</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951302.png" loading="lazy" class="lazy"></p> <p>不过我很快反应过来，自己当时投递的岗位是 <strong>后台开发工程师</strong> ，PHP 和 Go 语言都经常用于后台开发，面试官这么说，倒也挺合理。反而我在质问自己为什么这几天还看了那么多 Java 知识？！</p> <p>虽然自己之前写过 PHP 和 Go 语言，但都比较基础，我自知面试大厂完全不够格。但总不能扭头就走吧，于是我停顿思考了一下，一脸天真的说出了那句死亡发言：“没事的，Java 和它们都差不多，我也写过一点 Go 和 PHP ，虽然不多，但我可以学。”</p> <p>刚说完这句话，我就意识到不对，这几个编程语言哪里差不多了啊？！哪家公司愿意一天花 400 给我培训啊？！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951637.png" loading="lazy" class="lazy"></p> <p>然后我灵机一动，把话题带到了后台开发方向，向面试官表达了：虽然语言不对口，但是后台开发的模式、思想、常用中间件、业务设计方法都是一致的，比如设计模式、数据库操作、缓存、消息队列、微服务等。我还通过列举项目来表明自己拥有一定的后台开发经验，也有能力胜任这份工作。</p> <p>此外，还有非常重要的一点。还好我在面试开始的自我介绍中较详细地列举了自己的学习路线，表示自己现在学习新技术的速度在不断进步、能力也还不错。于是，我在这时给了大孙一个承诺：<strong>这场面试结束后，我会立刻开始 PHP 和 Go 语言的学习，如果有机会入职，会保证以最快的速度上手工作。</strong></p> <p>也许是我的 强烈的求生欲 自主性打动了大孙吧，面试得以继续。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951727.png" loading="lazy" class="lazy"></p> <p>大孙面试官非常理性，接下来再也没有问我编程语言层面的问题了，而是聊了一些后台技术，像数据库、框架之类的，基本都在我准备的知识范围内，具体的问题由于时间太久记不清了。当时虽然有把问题记录到了个人博客上，但博客早都挂了，有点可惜。</p> <p>技术聊完后，接下来果然要考察算法。注意，一般大厂的面试是少不了算法题的，<strong>考察算法有几种常见的方式：</strong></p> <ul><li>远程面试，不要求写，只让你讲述思路</li> <li>给你纸笔，让你手写，不要求可运行</li> <li>给你电脑，让你手敲，有时要求可运行并输出正确结果</li> <li>远程面试，让你手敲，且系统自动判题</li></ul> <p>这几种方式对算法精准度的要求依次增高，难度也依次增大。这次面试中，大孙把自己的电脑交给我，让我完成一道 “找出指定范围内所有的素数”，用什么编程语言都可以。我接过电脑一看，屏幕上正是我常用的 Sublime Text 编辑器，于是游刃有余地切换语言为自己熟悉的 Java 语言，开始敲代码。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951887.png" loading="lazy" class="lazy">Sublime Text 编辑器</p> <p>题目本身难度不大，找素数本身很简单，有好几种方法，是一道 ACM 初级题。但是面试官对题目的描述并不清楚，连数的范围是多少都没有说，也没说对时空间的要求，这些 <strong>对我选择算法很重要</strong> ，于是我再次向大孙确认这些。得到的信息是，数的范围不超过百万，算法越快越好。</p> <p>因此，我决定用埃氏筛法线性实现来做，这是一种范围取素数的好方法，具体的思路大家可以自行上网查阅。做完之后，我不仅给面试官讲解了这种解法，还结合题目限制条件，从时空间占用、实现难度等角度解释了自己选择这个算法而不用其他算法的原因。此外，我还乘胜追击，简单描述了其他条件下应该选择哪种算法，以及如何实现。</p> <p>所以，我们在学算法时，不仅要理解和讲述算法的思想，做到 <strong>多题一解</strong> 和 <strong>一题多解</strong> ，还要 <strong>熟练使用开发工具</strong> ，多敲代码多练习，最好保证能写出可运行的代码。</p> <blockquote><p>关于我学算法的方法，可以阅读这篇文章：<a href="https://mp.weixin.qq.com/s?__biz=MzI1NDczNTAwMA==&amp;mid=2247496505&amp;idx=1&amp;sn=4bf3d2e7ddc7fe6c7bba4da6d174074c&amp;scene=21#wechat_redirect" target="_blank" rel="noopener noreferrer">刷了 1000 多道算法题，一点心得<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></p></blockquote> <p>接下来，大孙还问了一些业务场景设计题，比如怎么设计一个用户权限管理系统等，我就结合自己以前做过的系统简单说了下，现在想想，感觉当时经验还是不足，答的一般。</p> <p>最后，就是经典的 “你有什么问题要问我么” 环节。这个环节我一向是比较随意的，没精心准备，也不必那么拘束和官方，就当成是朋友交流，问些满足自己好奇心的问题就行。而且我非常不客气，毕竟接触面试官的机会不多，来都来了，能交流多一点是一点。</p> <p>像我当时问了公司的工作环境、研发流程、业务侧重的技术等，还问了刚刚面试的问题有没有更好的解决方案，从而试探出面试官对你刚刚表现的评价。问完这些之后，不要忘记再用一句话表达自己对公司的向往和对个人成长的期待。</p> <p>就这样，本轮面试结束，大孙攻略成功！几分钟后，新的 BOSS 出现了。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951061.png" loading="lazy" class="lazy"></p> <h4 id="二面-如沐春风"><a href="#二面-如沐春风" class="header-anchor">#</a> 二面，如沐春风</h4> <p>二面的面试官大赵（我未来的组长）也是个男的，看上去非常沉稳，儒雅随和，说话的方式也很平和，让我一下子就感到放松了。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951012.png" loading="lazy" class="lazy">面试官大赵</p> <p>刚开始依然是自我介绍，介绍完后，面试官表示对我做过的一个项目很感兴趣，于是开始问我这个项目中用到的技术相关的问题，比如 MySQL、Redis、消息队列等。</p> <p><strong>正中下怀！</strong></p> <p>其实，我故意在自我介绍的最后提到了：我做过很多项目，但认为其中 <strong>最优秀</strong> 的项目是 xxx，在这个项目中，我用 MySQL 实现了 xxx，用 Redis 实现了 xxx，用消息队列实现了 xxx 等。</p> <p>这是一个很实用的技巧，我说这些，就是为了 <strong>引导面试官</strong> 接下来问我这些问题，果不其然，全中！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951081.png" loading="lazy" class="lazy"></p> <p>之后的面试就很舒服了，大部分的题目都是我这几天背的八股文原题，我甚至变被动为主动，持续给面试官 “下套”，故意引导他来问我会的问题。</p> <p>举个例子，他问我：MySQL 有哪些性能优化的措施？</p> <p>我就从多个角度、结合八股文和自己的实践经历进行了回答，比如硬件层面、网络层面、配置层面、软件层面、语句分析和调优等。我 <strong>故意</strong> 将 MySQL 常见的索引优化手段放到最后说，还提了一下索引最左匹配原则。</p> <p>果然，接下来面试官就问我最左原则了！稳不稳？</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951323.png" loading="lazy" class="lazy"></p> <p>总共问了有十几道技术题吧，除了上面说的之外，只记得其中几道了：</p> <ol><li>Redis 为什么是单线程的，有什么好处？</li> <li>讲解 NIO 和多路复用机制</li> <li>消息队列有几种常用的模型，分别有什么特点？</li></ol> <p>然后就是两道算法题，都是 LeetCode 上初级难度的原题，一道是动态规划入门题 —— <strong>爬楼梯</strong> ，另一道好像是二叉树相关的，记不太清了，反正都很简单就对了。</p> <p>这里提醒大家，即使遇到原题，也不要欣喜若狂，反而更应该冷静和自然一些，仔细确认题目是否有更改或者挖坑。既然是原题，就更应该谨慎思考，力求正确又流畅的完美发言。此外，如果有自信，你甚至还可以演一波儿，<strong>撑死胆大的</strong> 。</p> <p>比如我有一次就装作自己从来没有见过原题一样，假装是在面试官的指点下才恍然大悟，从而给面试官带来成就感：孺子可教啊！</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951488.png" loading="lazy" class="lazy"></p> <p>最后面试官还问了我一些场景设计题，让我印象深刻的一道题是：如何设计一个实时弹幕系统？</p> <p>一般这种题目都是开放的，未必有最佳实践，但是要结合你学过的技术和实践经验，尽量给出一个完整可行的设计方案，比如用什么技术实现什么功能，为什么要用这个技术等。光能设计出基本的系统功能还不够，还要再 <strong>全一点、深一点</strong> ，尽量在设计过程中挖掘新的问题，比如同一时刻弹幕数太多怎么处理？有用户刷垃圾弹幕怎么处理？等等等等。然后再试着去解决这个问题。</p> <p>当然，最好能提出多种方案，然后对比分析多个方案的优劣，从中选择一个相对最合理的。毕竟系统设计是程序员工作中的重要一环，面试官希望能看到你自主分析和解决问题的过程，从而判断你是否具备该岗位要求的工作能力。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951621.png" loading="lazy" class="lazy"></p> <p>直到现在，我都觉得这是我经历过最舒服的一场面试了，面试题目的难度恰到好处，和面试官的交流也非常轻松愉快。</p> <p>几分钟后，就迎来了三面。</p> <h4 id="三面"><a href="#三面" class="header-anchor">#</a> 三面</h4> <p>实习面试难度会比正式校招难度小一些，我的这次技术面只有两轮，第三面就是 HR 面了。</p> <p>HR 一般都是小姐姐，这轮面试基本就是问一些你的个人情况、求职动机等，以加深对你的了解。</p> <p>我印象里比较常见的问题有：</p> <ul><li>为什么想找实习？</li> <li>为什么选择我们公司？</li> <li>有没有面试其他公司？</li> <li>大概什么时候来实习？</li> <li>对我们公司，还有什么想了解的？</li></ul> <p>这些问题都比较轻松，我一般实事求是地回答。比如当问到我 “大概什么时候来实习” 时，我内心虽然比较慌，担心因为时间原因不被录取，但还是如实地说自己还要准备考试和课程设计，可能要等寒假。</p> <p>我注意到 HR 姐姐听到这里时脸色变了变，于是我补充到：考试的知识我会前提复习，也会尽力和老师协调，看看能否提前完成课设，争取尽早入职。而且我可以提前学习技术，尽快上手工作，并且寒假可以全勤。</p> <p>即使这么说了，我内心还是忐忑不安的，但没想到过了两三天，就给我发 offer 了！字节的效率真是高啊。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951582.png" loading="lazy" class="lazy"></p> <h3 id="工作内容"><a href="#工作内容" class="header-anchor">#</a> 工作内容</h3> <p>因为 HR 表示部门缺人，希望我越早入职越好，所以如面试时承诺的那样，我期末考试还没完全结束，大概还剩 2 门的时候，我就匆匆入职了。</p> <p>我们部门规定的工作时间是早 10 晚 7，大小周（单周上 6 天，双周上 5 天）。正如前面所说，因为我们学校在 “乡下”，所以每天要坐单程两小时的地铁到公司，路上依然保持背背单词、看看文章的习惯。</p> <p>哦对了，肯定有同学想问，我学校没有课程了么？怎么能兼顾学校课程和公司实习呢？</p> <p>其实是这样，我早在大二的时候，就计划自己要在大三时出去实习或者搞竞赛，于是在之前就提前选了些大三的课程，所以整个大三期间，我基本没有几门课，跟领导也商量了下，每周抽 3 - 4 天去实习是完全没问题的，而且寒假可以全勤。</p> <p>第一天入职，负责 IT 的同学给我拿来了一台全新的苹果电脑，给我讲解公司的一些网络策略，以及如何连接 VPN、远程办公等。然后导师大赵（组长、二面面试官）就来接我了，给我安排了工位，就坐在他旁边！工位上放了一本字节跳动的小本子，上面写了 “Always Day One” 还有字节范儿。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951025.png" loading="lazy" class="lazy"></p> <p>然后大赵带我认识了一圈儿同事，并且让大孙（一面面试官）给我安排工作、带我入门。</p> <p>我记得网上有这么个 “传统”，入职字节跳动的同学都要拍一下公司的办公环境、零食、下午茶、福利啊等等。但因为我这次的实习部门不在上海字节跳动总部，而是在某办公大楼内承包了几层工位，工作环境就是马蜂窝式的独立办公间；再加上也不是第一次实习了，所以并没有什么新鲜感，来到公司就好好干活吧！</p> <p>工作内容是负责字节跳动旗下某教育产品的后端研发，使用的语言是 PHP 和 Go。入职第一天大孙让我先搭建基础的研发环境，包括 PHP Laravel 框架、数据库、配置密钥、开通一堆权限等，然后用 Laravel 写一个 todoList，说是写完之后再分配工作。我之前自己学过一些 PHP，再加上有备而来，轻轻松松写完了。</p> <p><img alt="" data-src="https://mmbiz.qpic.cn/mmbiz_svg/HmVQlX9WkBsVtLticAQ9cWqy6rTP38sYJVpfd3d5kYm24iaUQ1UlVvPTxibOBQdSV1ZZmcwgIiakfiaRPpxA6AWAiaycNWvfWwib8SF/640?wx_fmt=svg&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1" loading="lazy" class="lazy">Laravel 框架环境</p> <p>之后，我成为了大孙的小弟，他带着我一起参与需求评审，一起开发需求，和前端、客户端、测试同学配合保障整个系统的上线。</p> <p>工作生活虽日复一日，但也有很多有趣的事。</p> <h4 id="_1-抢饭"><a href="#_1-抢饭" class="header-anchor">#</a> 1. 抢饭</h4> <p>我们那边当时还没有食堂，一日三餐 + 下午茶都是商务订餐（盒饭），每个盒饭里的菜各不相同。所以一到饭点儿，就能听到大地震颤的声音，轰轰隆隆的一大帮子人就去抢饭了。像我们组一般会轮流派两个人帮大家统一去拿。</p> <p>有一说一，字节跳动的伙食真的是好，六菜一汤、炒饭炒面炒年糕、酸奶水果饮料随便拿，关键还免费，你说气人不？</p> <p>就是我拍的不太好哈哈~</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951143.png" loading="lazy" class="lazy"></p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951398.png" loading="lazy" class="lazy"></p> <h4 id="_2-追饭"><a href="#_2-追饭" class="header-anchor">#</a> 2. 追饭</h4> <p>因为每天早上我都是从学校出发，路途遥远，再加上晚上熬夜，第二天有时不得不踩点儿到公司，到了公司吃免费早餐。</p> <p>公司的早餐还是很丰富的，中式西式都有，肯德基、麦当劳、德克士、手抓饼、早餐粥等等。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951345.png" loading="lazy" class="lazy"></p> <p>但是公司有规定，早餐只提供到 10 点。结果有一次，我就在 10 点钟那一刻来到了公司，当时领早饭的房间门正要关上，我就赶紧喊了一句：“等等我，wait me wait me！”</p> <p>结果餐饮部的同事还是无情地把我拒之门外了，规定就是规定，一秒钟也不能多！</p> <p>我当时虽心有不甘，但还是非常认可他们的做法，也暗自感叹字节跳动的员工真的很棒。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951049.png" loading="lazy" class="lazy"></p> <h4 id="_3-独居"><a href="#_3-独居" class="header-anchor">#</a> 3. 独居</h4> <p>在字节跳动的实习过程中，我有一段独居生活。</p> <p>为啥要租房呢？</p> <p>一方面是考虑到整个寒假期间我每天都会到岗，从学校到公司距离还是有点远的，虽然我会利用好路上的时间，但心有余而力不足，来回跑太累了。另一方面是公司有 1000 多块钱的补贴，不用白不用。</p> <p>所以干脆自己在公司附近短租了个十平米小房子，看一看咯~</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951247.png" loading="lazy" class="lazy"></p> <p>这么一拍好像不小，实际上就一个小走廊和一张床。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951739.png" loading="lazy" class="lazy"></p> <p>是在自如平台租的，价格 2200 / 月，最后不住的话再交给自如平台转租就好了，省时省心~</p> <p>那会儿脑袋瓦特了，还买了辆 100 多元的自行车，到最后也没组装上。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951300.png" loading="lazy" class="lazy"></p> <h4 id="_4-教导"><a href="#_4-教导" class="header-anchor">#</a> 4. 教导</h4> <p>在字节跳动对我影响最大的同事就是大孙了，他为人幽默，很会教人做事（这里是褒义啦）。</p> <p>每次我写完代码，大孙都要仔仔细细地过一遍，然后专门跑到我工位上跟我讲哪里可以改进，比如不要把一些值写的太死、要多用复制粘贴、减少重复劳动等等。</p> <p>他还有意锻炼我的逻辑思维能力，比如把整个方案交给我来设计，并且要求给他完整清晰地讲出来，直到他能听懂并且觉得合理了为止；而不是直接帮我想好做什么，把我变成一个写代码的机器。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951942.png" loading="lazy" class="lazy"></p> <p>此外，他还教会了很多实用的工作经验，比如怎么高效合作、怎么分清工作主次、怎么防止被甩锅等。像之前有一个前端的妹子来找我帮忙排查问题，我没有仔细思考问题到底出在何处，就开始排查自己的代码了。大孙知道后，第一时间分析这个问题并划分边界，然后给出了一个证明不是我们后端出了问题的理由，直接帮我减少了没有太大意义的工作量。</p> <p>当然，我的领导大赵也教会了很多处事方法，有些东西我可能会想的简单了，上手就做。而大赵哥思维缜密、顾全大局，让我意识到了冷静分析的重要性。</p> <h4 id="_5-活动"><a href="#_5-活动" class="header-anchor">#</a> 5. 活动</h4> <p>字节跳动内部还有很多活动，每周三是固定的活动日，大家可以参与社团、一起运动，也可以提早下班。还有各种福利性质的活动，比如七周年的集卡分百万，不过我点儿背，始终集不齐就对了。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951650.png" loading="lazy" class="lazy"></p> <p>大概实习了四个多月，我因为一些原因离职了，倒不是因为工作压力太大（毕竟因为学校远，我每天都是 19 点准时下班），而是因为竞赛压力和升学压力等种种原因，最终还是摘下了这个 “价值百万” 的字节工牌。</p> <p>值得一题的是，就在我要离职的几天前，公司全部搬了新工位，再也不是马蜂窝办公室了，而且还有了自己的食堂、超大会议室等等。真是想吐槽，从小到大，我读过的每个学校都是等我刚刚毕业就装修了，一次都没赶上好时候啊。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951687.jpeg" loading="lazy" class="lazy"></p> <h3 id="收获和感悟"><a href="#收获和感悟" class="header-anchor">#</a> 收获和感悟</h3> <p>在字节跳动实习的这段时间，虽然很累，但付出和收获是成正比的。</p> <p>如果说 <a href="https://mp.weixin.qq.com/s?__biz=MzI1NDczNTAwMA==&amp;mid=2247496813&amp;idx=1&amp;sn=b61b5ca564d74ac5a5902f755d64acb5&amp;scene=21#wechat_redirect" target="_blank" rel="noopener noreferrer">第一次实习<span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a> 是帮助我走出校园，积累了一些企业协作开发的经验；那么第二次实习则是帮我真正走进社会，感受到了一名研发工程师应尽的职责和义务。</p> <p>首先，字节跳动真的非常适合新人成长，这里的员工相对都比较年轻，团队敢用新人、重用新人。进入公司直接上手项目，全程参与项目的设计到研发过程，再加上相对较快的工作节奏，不断给你挑战，从而激励你快速成长。大部分其他的公司都是让你一个实习生打打杂，找找 bug，测试测试就完了。</p> <p>其次，字节跳动的技术氛围好，像我们组每周都会举办技术分享，大家在一起开发个小项目、或者讨论个技术知识啥的。还有就是大厂的技术沉淀非常多，整个实习期间，我也基本没给自己留下遗憾，有空就翻翻公司内部的文档，了解下字节 <strong>APP 工厂</strong> 的产品矩阵，的确能够大开眼界。</p> <p>最后还有独居带给我的成长，毕竟这是我人生第一次租房，然后每天从出租屋里头出门上班，只看到太阳升起却不见日落，日复一日地自己赚钱养活自己，算是提前感受到了未来打工人的生活吧。也不禁感叹生活不易，激励自己还是趁着年轻再多努努力。</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951763.jpeg" loading="lazy" class="lazy"></p> <p>总而言之，字节跳动真的非常好，我后来也去面试过几次。不过最终还是没选择这里，原因大家猜得到的话可以评论出来。</p> <blockquote><p>卧槽突然想起来，字节跳动还欠我份实习证明，答应给我邮寄的却鸽了！大家进去后麻烦帮我要下谢谢~ 🐶</p></blockquote> <hr> <p>好了，以上就是我的第二份实习，还在校园的朋友们，一定要有目标、有规划，必须心里有数，才能脚下有路。然后就奋力去追吧，不要因为外界因素怀疑自己，反正奔跑总比坐以待毙的好。</p> <p><strong>相信自己有能力，那么你就真的会有！</strong></p> <p>第三份实习经历的分享目前还差十万八千里，希望朋友们能 <strong>点赞 + 在看</strong> 支持下，给俺点创作的动力 ❤️</p> <p><img alt="" data-src="https://pic.yupi.icu/5563/202311021951183.png" loading="lazy" class="lazy"></p></div> <footer class="page-edit" style="margin:0;"><div class="edit-link"><a href="https://github.com/liyupi/codefather/edit/master/自学之路/求职经历/我的第二份实习，字节跳动.md" target="_blank" rel="noopener noreferrer">完善页面</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <div class="last-updated"><span class="prefix">最近更新:</span> <span class="time">11/11/2023, 8:17:47 PM</span></div></footer> <!----></div> <div class="toc-container-sidebar"><div class="pos-box"><div class="icon-arrow"></div> <div class="scroll-box" style="max-height:86vh"><div style="font-weight:bold;">我的第二份实习，字节跳动</div> <hr> <div class="toc-box"><!----></div></div></div></div></div>  <main class="footer"> <div class="copy-right"><span class="name"> 编程导航   |     </span> <a target="_blank" rel="noreferrer">
          
        </a></div></main></main> <aside class="page-sidebar"> <div class="page-side-toolbar"></div>  </aside></div><div class="global-ui"><!----></div></div>
    <script src="/assets/js/app.12ab4756.js" defer></script><script src="/assets/js/2.fd06b53e.js" defer></script><script src="/assets/js/498.1d726726.js" defer></script>
  </body>
</html>
